__author__ = 'Zhaokun'
#coding=utf-8

###############################
# Dive Into Python
# 第三章 内置数据类型
# dictionary（字典）、tuple（元组）、list（列表）
#
# 例 3.1 Dictionary
# >>>d = {'server' :　'master'}
# 1. 在一个dict中不能有重复的key，给一个存在的key赋值会覆盖原来的值。
# 2. 在任何时候都可以加入新的key-value对。
# 3. Dict没有元素顺序的概念。
# 4. Dict不只是用来存储字符串，可以是任意数据类型，包括字符串、整数、对象，甚至其他的
#   dict。可以根据需要混用和匹配。
# 5. 使用del d['server']删除元素,使用d.clear()清楚所有元素
#
# 例 3.2 List
# >>>li = ['a', 'b', 'c']
# 1. list是一个用方括号包括起来的有序元素的集合
# 2. list可以作为以0下标开始的数组
# 3. 负数索引从list的尾部开始向前计数来存取元素
# 4. 可以通过指定2个索引得到list的子集，叫做一个‘slice’。返回值是一个新的list，它包括
#   了list中按顺序从第一个slice索引开始，直到但是不包括第二个slice索引的所有元素。
# 5. 如果左侧分片索引为0， 可以省略
# 6. 如果右侧分片索引是list的长度， 可以省略
# 7. li[:]是生成一个list完全拷贝的一个简写
# 8. append向list的末尾追加单个元素
# 9. insert将单个元素插入到list中
# 10. extend用来连接list.
# 11. >>>li.extend(['d', 'e', 'f'])
#     >>>li
#       ['a', 'b', 'c', 'd', 'e', 'f']
#     >>>li.append(['d', 'e', 'f'])
#     >>>li
#       ['a', 'b', 'c', ['d', 'e', 'f']]
# 12. index在list中查找一个值的首次出现并返回索引值
# 13. 如果在list中没有找到，会引起一个异常。
# 14. 要测试一个值是否在list内，使用in，如果值存在，返回True，否则返回False。
# 15. remove从list中删除一个值的首次出现
# 16. 如果没有找到值，remove会引起一个异常
# 17. pop会删除list的最后一个元素，然后返回删除元素的值。
# 18. list也可以用+运算符连接，同extend。但+运算符把一个新的list作为值返回，而extend是
#   修改原list本身。对于大型list来说，extend的执行速度会快一些
# 19. list支持+=运算符。li+=['two']等同li.extend(['two']).
# 20. *运算符可以作为一个重复器作用于list.
# ,
#######57页

if __name__ == '__main__':
    L = [0, 1,2,3,4,5,6,7]
    print L[-5:-1]